Angular 應用程式中的元素新增額外行為的類別。
編號 | 種類 | 詳情 | 通用指令 |
---|---|---|---|
1 | 元件 | 帶有範本的指令(Used with a template) | template:'' |
2 | 屬性型 | 更改外觀或行為的指令 | Ngclass Ngstyle Ngmodel |
3 | 結構型 | 透過新增和刪除 DOM 元素來更改 DOM 佈局 | Ngif Ngfor NgSwitch |
// app.component.ts
@Component({
selector: 'my-App',
template: '<h1>{{name}}</h1>'
})
主要用於改變 html 元素/元件 的屬性。
Day05-Template 範本: 資料綁定 DOM ↔ Component 有稍微提到過屬性的繫結
通用指令 | 詳情 |
---|---|
Ngclass |
新增、刪除一組 CSS |
Ngstyle |
新增、刪除一組 HTML 樣式 |
Ngmodel |
雙向資料繫結新增到 HTML 表單元素 |
[ngClass] = "string | string[] | Set<string> | { [klass: string]: any; }"
<!-- XXX.component.html -->
<button [ngClass]="isSpecial ? 'myclass1' : ''">送出</button>
// XXX.component.ts
isSpecial: boolean = true;
// XXX.component.css
.myclass1{
color:grey;
}
延伸閱讀:Typescript高级类型Record
Record 會將某個類型的屬性值 映射至 另個類型、並創造一個新的類型。
<!-- XXX.component.html -->
<button [ngClass]="currentClasses">送出</button>
// XXX.component.ts
currentClasses: Record<string, boolean> = {};
setCurrentClasses() {
this.currentClasses = {
saveable: this.canSave, // Boolean
modified: !this.isUnchanged, // Boolean
special: this.isSpecial // Boolean
};
}
[ngStyle] = "{ [klass: string]: any; }"
<!-- XXX.component.html -->
<button [ngStyle]='applyClasses()'>送出</button>
// XXX.component.css
.boldClass{
font-weight:bold;
font-size : 30px;
}
.colorClass{
color:grey;
}
// XXX.component.ts
applyClasses() {
return {
boldClass: true,
italicsClass: true
}
}
<!-- XXX.component.html -->
<button [ngStyle]="currentClasses">送出</button>
// XXX.component.ts
currentClasses: Record<string, boolean> = {};
setCurrentClasses() {
this.currentClasses = {
'font-style': this.canSave ? 'italic' : 'normal',
'font-weight': !this.isUnchanged ? 'bold' : 'normal',
'font-size': this.isSpecial ? '24px' : '12px'
};
}
引入 Angular 的 FormsModule
才能使用 [(ngModel)]
// app.module.ts
import { FormsModule } from '@angular/forms';
imports: [
...,
FormsModule
]
<!-- XXX.component.html -->
<input [(ngModel)]="myname">
// XXX.component.ts
myname: string = "";
Angular - 內建指令
Angular Directives With Examples
[Day17] TS:理解 Pick、Record 的實作